; win32 includes
; ryg/witchcraft

; copy & pasted from windows include files

struc WNDCLASS
  .style         resd 1
  .lpfnWndProc   resd 1
  .cbClsExtra    resd 1
  .cbWndExtra    resd 1
  .hInstance     resd 1
  .hIcon         resd 1
  .hCursor       resd 1
  .hbrBackground resd 1
  .lpszMenuName  resd 1
  .lpszClassName resd 1
  .size:
endstruc

struc POINT
  .x             resd 1
  .y             resd 1
  .size:
endstruc

struc MSG
  .hwnd          resd 1
  .message       resd 1
  .wParam        resd 1
  .lParam        resd 1
  .time          resd 1
  .pt            resb POINT.size
  .size:
endstruc

struc WAVEFORMATEX
  .wFormatTag      resw 1       ; format type
  .nChannels       resw 1       ; number of channels (i.e. mono, stereo...)
  .nSamplesPerSec  resd 1       ; sample rate
  .nAvgBytesPerSec resd 1       ; for buffer estimation
  .nBlockAlign     resw 1       ; block size of data
  .wBitsPerSample  resw 1       ; number of bits per sample of mono data
  .cbSize          resw 1       ; the count in bytes of the size of extra bytes
  .size
endstruc


%define    WS_OVERLAPPED       0x00000000
%define    WS_POPUP            0x80000000
%define    WS_CHILD            0x40000000
%define    WS_MINIMIZE         0x20000000
%define    WS_VISIBLE          0x10000000
%define    WS_DISABLED         0x08000000
%define    WS_CLIPSIBLINGS     0x04000000
%define    WS_CLIPCHILDREN     0x02000000
%define    WS_MAXIMIZE         0x01000000
%define    WS_CAPTION          0x00C00000
%define    WS_BORDER           0x00800000
%define    WS_DLGFRAME         0x00400000
%define    WS_VSCROLL          0x00200000
%define    WS_HSCROLL          0x00100000
%define    WS_SYSMENU          0x00080000
%define    WS_THICKFRAME       0x00040000
%define    WS_GROUP            0x00020000
%define    WS_TABSTOP          0x00010000

%define    WS_MINIMIZEBOX      0x00020000
%define    WS_MAXIMIZEBOX      0x00010000

%define    WS_OVERLAPPEDWINDOW (WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX|WS_MAXIMIZEBOX)
%define    WS_POPUPWINDOW      (WS_POPUP|WS_BORDER|WS_SYSMENU)
%define    WS_CHILDWINDOW      (WS_CHILD)

%define    WS_TILED            WS_OVERLAPPED
%define    WS_ICONIC           WS_MINIMIZE
%define    WS_SIZEBOX          WS_THICKFRAME
%define    WS_TILEDWINDOW      WS_OVERLAPPEDWINDOW

%define    SW_HIDE             0
%define    SW_SHOWNORMAL       1
%define    SW_NORMAL           1
%define    SW_SHOWMINIMIZED    2
%define    SW_SHOWMAXIMIZED    3
%define    SW_MAXIMIZE         3
%define    SW_SHOWNOACTIVE     4
%define    SW_SHOW             5
%define    SW_MINIMIZE         6
%define    SW_SHOWMINNOACTIVE  7
%define    SW_SHOWNA           8
%define    SW_RESTORE          9
%define    SW_SHOWDEFAULT      10
%define    SW_MAX              10

%define SM_CXSCREEN             0
%define SM_CYSCREEN             1
%define SM_CXVSCROLL            2
%define SM_CYHSCROLL            3
%define SM_CYCAPTION            4
%define SM_CXBORDER             5
%define SM_CYBORDER             6
%define SM_CXDLGFRAME           7
%define SM_CYDLGFRAME           8
%define SM_CYVTHUMB             9
%define SM_CXHTHUMB             10
%define SM_CXICON               11
%define SM_CYICON               12
%define SM_CXCURSOR             13
%define SM_CYCURSOR             14
%define SM_CYMENU               15
%define SM_CXFULLSCREEN         16
%define SM_CYFULLSCREEN         17
%define SM_CYKANJIWINDOW        18
%define SM_MOUSEPRESENT         19
%define SM_CYVSCROLL            20
%define SM_CXHSCROLL            21
%define SM_DEBUG                22
%define SM_SWAPBUTTON           23
%define SM_RESERVED1            24
%define SM_RESERVED2            25
%define SM_RESERVED3            26
%define SM_RESERVED4            27
%define SM_CXMIN                28
%define SM_CYMIN                29
%define SM_CXSIZE               30
%define SM_CYSIZE               31
%define SM_CXFRAME              32
%define SM_CYFRAME              33
%define SM_CXMINTRACK           34
%define SM_CYMINTRACK           35
%define SM_CXDOUBLECLK          36
%define SM_CYDOUBLECLK          37
%define SM_CXICONSPACING        38
%define SM_CYICONSPACING        39
%define SM_MENUDROPALIGNMENT    40
%define SM_PENWINDOWS           41
%define SM_DBCSENABLED          42
%define SM_CMOUSEBUTTONS        43
%define SM_CXFIXEDFRAME           SM_CXDLGFRAME
%define SM_CYFIXEDFRAME           SM_CYDLGFRAME
%define SM_CXSIZEFRAME            SM_CXFRAME   
%define SM_CYSIZEFRAME            SM_CYFRAME   
%define SM_SECURE               44
%define SM_CXEDGE               45
%define SM_CYEDGE               46
%define SM_CXMINSPACING         47
%define SM_CYMINSPACING         48
%define SM_CXSMICON             49
%define SM_CYSMICON             50
%define SM_CYSMCAPTION          51
%define SM_CXSMSIZE             52
%define SM_CYSMSIZE             53
%define SM_CXMENUSIZE           54
%define SM_CYMENUSIZE           55
%define SM_ARRANGE              56
%define SM_CXMINIMIZED          57
%define SM_CYMINIMIZED          58
%define SM_CXMAXTRACK           59
%define SM_CYMAXTRACK           60
%define SM_CXMAXIMIZED          61
%define SM_CYMAXIMIZED          62
%define SM_NETWORK              63
%define SM_CLEANBOOT            67
%define SM_CXDRAG               68
%define SM_CYDRAG               69
%define SM_SHOWSOUNDS           70
%define SM_CXMENUCHECK          71
%define SM_CYMENUCHECK          72
%define SM_SLOWMACHINE          73
%define SM_MIDEASTENABLED       74
%define SM_CMETRICS             76

%define MB_OK                       0x00000000
%define MB_OKCANCEL                 0x00000001
%define MB_ABORTRETRYIGNORE         0x00000002
%define MB_YESNOCANCEL              0x00000003
%define MB_YESNO                    0x00000004
%define MB_RETRYCANCEL              0x00000005

%define MB_ICONHAND                 0x00000010
%define MB_ICONQUESTION             0x00000020
%define MB_ICONEXCLAMATION          0x00000030
%define MB_ICONASTERISK             0x00000040
%define MB_USERICON                 0x00000080
%define MB_ICONWARNING              MB_ICONEXCLAMATION
%define MB_ICONERROR                MB_ICONHAND
%define MB_ICONINFORMATION          MB_ICONASTERISK
%define MB_ICONSTOP                 MB_ICONHAND
%define MB_DEFBUTTON1               0x00000000
%define MB_DEFBUTTON2               0x00000100
%define MB_DEFBUTTON3               0x00000200
%define MB_DEFBUTTON4               0x00000300
%define MB_APPLMODAL                0x00000000
%define MB_SYSTEMMODAL              0x00001000
%define MB_TASKMODAL                0x00002000
%define MB_HELP                     0x00004000
%define MB_NOFOCUS                  0x00008000
%define MB_SETFOREGROUND            0x00010000
%define MB_DEFAULT_DESKTOP_ONLY     0x00020000
%define MB_TOPMOST                  0x00040000
%define MB_RIGHT                    0x00080000
%define MB_RTLREADING               0x00100000
%define MB_TYPEMASK                 0x0000000F
%define MB_ICONMASK                 0x000000F0
%define MB_DEFMASK                  0x00000F00
%define MB_MODEMASK                 0x00003000
%define MB_MISCMASK                 0x0000C000

%define WM_NULL                         0x0000
%define WM_CREATE                       0x0001
%define WM_DESTROY                      0x0002
%define WM_MOVE                         0x0003
%define WM_SIZE                         0x0005
%define WM_ACTIVATE                     0x0006
%define     WA_INACTIVE     0
%define     WA_ACTIVE       1
%define     WA_CLICKACTIVE  2
%define WM_SETFOCUS                     0x0007
%define WM_KILLFOCUS                    0x0008
%define WM_ENABLE                       0x000A
%define WM_SETREDRAW                    0x000B
%define WM_SETTEXT                      0x000C
%define WM_GETTEXT                      0x000D
%define WM_GETTEXTLENGTH                0x000E
%define WM_PAINT                        0x000F
%define WM_CLOSE                        0x0010
%define WM_QUERYENDSESSION              0x0011
%define WM_QUIT                         0x0012
%define WM_QUERYOPEN                    0x0013
%define WM_ERASEBKGND                   0x0014
%define WM_SYSCOLORCHANGE               0x0015
%define WM_ENDSESSION                   0x0016
%define WM_SHOWWINDOW                   0x0018
%define WM_WININICHANGE                 0x001A
%define WM_SETTINGCHANGE                WM_WININICHANGE
%define WM_DEVMODECHANGE                0x001B
%define WM_ACTIVATEAPP                  0x001C
%define WM_FONTCHANGE                   0x001D
%define WM_TIMECHANGE                   0x001E
%define WM_CANCELMODE                   0x001F
%define WM_SETCURSOR                    0x0020
%define WM_MOUSEACTIVATE                0x0021
%define WM_CHILDACTIVATE                0x0022
%define WM_QUEUESYNC                    0x0023
%define WM_GETMINMAXINFO                0x0024
%define WM_PAINTICON                    0x0026
%define WM_ICONERASEBKGND               0x0027
%define WM_NEXTDLGCTL                   0x0028
%define WM_SPOOLERSTATUS                0x002A
%define WM_DRAWITEM                     0x002B
%define WM_MEASUREITEM                  0x002C
%define WM_DELETEITEM                   0x002D
%define WM_VKEYTOITEM                   0x002E
%define WM_CHARTOITEM                   0x002F
%define WM_SETFONT                      0x0030
%define WM_GETFONT                      0x0031
%define WM_SETHOTKEY                    0x0032
%define WM_GETHOTKEY                    0x0033
%define WM_QUERYDRAGICON                0x0037
%define WM_COMPAREITEM                  0x0039
%define WM_COMPACTING                   0x0041
%define WM_COMMNOTIFY                   0x0044  /* no longer suported */
%define WM_WINDOWPOSCHANGING            0x0046
%define WM_WINDOWPOSCHANGED             0x0047
%define WM_POWER                        0x0048
%define PWR_OK              1
%define PWR_FAIL            (-1)
%define PWR_SUSPENDREQUEST  1
%define PWR_SUSPENDRESUME   2
%define PWR_CRITICALRESUME  3
%define WM_COPYDATA                     0x004A
%define WM_CANCELJOURNAL                0x004B
%define WM_NOTIFY                       0x004E
%define WM_INPUTLANGCHANGEREQUEST       0x0050
%define WM_INPUTLANGCHANGE              0x0051
%define WM_TCARD                        0x0052
%define WM_HELP                         0x0053
%define WM_USERCHANGED                  0x0054
%define WM_NOTIFYFORMAT                 0x0055
%define NFR_ANSI                             1
%define NFR_UNICODE                          2
%define NF_QUERY                             3
%define NF_REQUERY                           4
%define WM_CONTEXTMENU                  0x007B
%define WM_STYLECHANGING                0x007C
%define WM_STYLECHANGED                 0x007D
%define WM_DISPLAYCHANGE                0x007E
%define WM_GETICON                      0x007F
%define WM_SETICON                      0x0080
%define WM_NCCREATE                     0x0081
%define WM_NCDESTROY                    0x0082
%define WM_NCCALCSIZE                   0x0083
%define WM_NCHITTEST                    0x0084
%define WM_NCPAINT                      0x0085
%define WM_NCACTIVATE                   0x0086
%define WM_GETDLGCODE                   0x0087
%define WM_NCMOUSEMOVE                  0x00A0
%define WM_NCLBUTTONDOWN                0x00A1
%define WM_NCLBUTTONUP                  0x00A2
%define WM_NCLBUTTONDBLCLK              0x00A3
%define WM_NCRBUTTONDOWN                0x00A4
%define WM_NCRBUTTONUP                  0x00A5
%define WM_NCRBUTTONDBLCLK              0x00A6
%define WM_NCMBUTTONDOWN                0x00A7
%define WM_NCMBUTTONUP                  0x00A8
%define WM_NCMBUTTONDBLCLK              0x00A9
%define WM_KEYFIRST                     0x0100
%define WM_KEYDOWN                      0x0100
%define WM_KEYUP                        0x0101
%define WM_CHAR                         0x0102
%define WM_DEADCHAR                     0x0103
%define WM_SYSKEYDOWN                   0x0104
%define WM_SYSKEYUP                     0x0105
%define WM_SYSCHAR                      0x0106
%define WM_SYSDEADCHAR                  0x0107
%define WM_KEYLAST                      0x0108
%define WM_IME_STARTCOMPOSITION         0x010D
%define WM_IME_ENDCOMPOSITION           0x010E
%define WM_IME_COMPOSITION              0x010F
%define WM_IME_KEYLAST                  0x010F
%define WM_INITDIALOG                   0x0110
%define WM_COMMAND                      0x0111
%define WM_SYSCOMMAND                   0x0112
%define WM_TIMER                        0x0113
%define WM_HSCROLL                      0x0114
%define WM_VSCROLL                      0x0115
%define WM_INITMENU                     0x0116
%define WM_INITMENUPOPUP                0x0117
%define WM_MENUSELECT                   0x011F
%define WM_MENUCHAR                     0x0120
%define WM_ENTERIDLE                    0x0121
%define WM_CTLCOLORMSGBOX               0x0132
%define WM_CTLCOLOREDIT                 0x0133
%define WM_CTLCOLORLISTBOX              0x0134
%define WM_CTLCOLORBTN                  0x0135
%define WM_CTLCOLORDLG                  0x0136
%define WM_CTLCOLORSCROLLBAR            0x0137
%define WM_CTLCOLORSTATIC               0x0138
%define WM_MOUSEFIRST                   0x0200
%define WM_MOUSEMOVE                    0x0200
%define WM_LBUTTONDOWN                  0x0201
%define WM_LBUTTONUP                    0x0202
%define WM_LBUTTONDBLCLK                0x0203
%define WM_RBUTTONDOWN                  0x0204
%define WM_RBUTTONUP                    0x0205
%define WM_RBUTTONDBLCLK                0x0206
%define WM_MBUTTONDOWN                  0x0207
%define WM_MBUTTONUP                    0x0208
%define WM_MBUTTONDBLCLK                0x0209
%define WM_MOUSEWHEEL                   0x020A
%define WM_MOUSELAST                    0x020A
%define WHEEL_DELTA                     120
%define WM_PARENTNOTIFY                 0x0210
%define MENULOOP_WINDOW                 0
%define MENULOOP_POPUP                  1
%define WM_ENTERMENULOOP                0x0211
%define WM_EXITMENULOOP                 0x0212
%define WM_NEXTMENU                     0x0213
%define WM_SIZING                       0x0214
%define WM_CAPTURECHANGED               0x0215
%define WM_MOVING                       0x0216
%define WM_POWERBROADCAST               0x0218
%define WM_DEVICECHANGE                 0x0219
%define WM_IME_SETCONTEXT               0x0281
%define WM_IME_NOTIFY                   0x0282
%define WM_IME_CONTROL                  0x0283
%define WM_IME_COMPOSITIONFULL          0x0284
%define WM_IME_SELECT                   0x0285
%define WM_IME_CHAR                     0x0286
%define WM_IME_KEYDOWN                  0x0290
%define WM_IME_KEYUP                    0x0291
%define WM_MDICREATE                    0x0220
%define WM_MDIDESTROY                   0x0221
%define WM_MDIACTIVATE                  0x0222
%define WM_MDIRESTORE                   0x0223
%define WM_MDINEXT                      0x0224
%define WM_MDIMAXIMIZE                  0x0225
%define WM_MDITILE                      0x0226
%define WM_MDICASCADE                   0x0227
%define WM_MDIICONARRANGE               0x0228
%define WM_MDIGETACTIVE                 0x0229
%define WM_MDISETMENU                   0x0230
%define WM_ENTERSIZEMOVE                0x0231
%define WM_EXITSIZEMOVE                 0x0232
%define WM_DROPFILES                    0x0233
%define WM_MDIREFRESHMENU               0x0234
%define WM_MOUSEHOVER                   0x02A1
%define WM_MOUSELEAVE                   0x02A3
%define WM_CUT                          0x0300
%define WM_COPY                         0x0301
%define WM_PASTE                        0x0302
%define WM_CLEAR                        0x0303
%define WM_UNDO                         0x0304
%define WM_RENDERFORMAT                 0x0305
%define WM_RENDERALLFORMATS             0x0306
%define WM_DESTROYCLIPBOARD             0x0307
%define WM_DRAWCLIPBOARD                0x0308
%define WM_PAINTCLIPBOARD               0x0309
%define WM_VSCROLLCLIPBOARD             0x030A
%define WM_SIZECLIPBOARD                0x030B
%define WM_ASKCBFORMATNAME              0x030C
%define WM_CHANGECBCHAIN                0x030D
%define WM_HSCROLLCLIPBOARD             0x030E
%define WM_QUERYNEWPALETTE              0x030F
%define WM_PALETTEISCHANGING            0x0310
%define WM_PALETTECHANGED               0x0311
%define WM_HOTKEY                       0x0312
%define WM_PRINT                        0x0317
%define WM_PRINTCLIENT                  0x0318
%define WM_HANDHELDFIRST                0x0358
%define WM_HANDHELDLAST                 0x035F
%define WM_AFXFIRST                     0x0360
%define WM_AFXLAST                      0x037F
%define WM_PENWINFIRST                  0x0380
%define WM_PENWINLAST                   0x038F
%define WM_APP                          0x8000

%define PM_NOREMOVE                     0x0000
%define PM_REMOVE                       0x0001
%define PM_NOYIELD                      0x0002
